package 基础.reflect反射_注解;

import tedu.api.reflect.annotations.AutoRunClass;

import java.io.File;

/**
 * 输出与当前类Test4在同一个包中所有类是否被@AutoRunClass标注
 */
public class Test4 {
    public static void main(String[] args) throws Exception {
        //获取包名
        String packName = Test4.class.getPackage().getName();
        //拿到类所在的文件夹
        File dir = new File(Test4.class.getResource(".").toURI());
        //获取文件夹下所有类
        File[] subs = dir.listFiles(f->f.getName().endsWith(".class"));
        for(File s : subs){
            String fileName = s.getName();
            //在文件名中截取类名
            String className = fileName.substring(0,fileName.indexOf("."));
            //获取类对象
            Class cls = Class.forName(packName+"."+className);
            //根据类对象判断该类是否被注解@AutoRunClass标注了
            boolean flag = cls.isAnnotationPresent(AutoRunClass.class);
            System.out.println(cls.getSimpleName()+"标注状态（AutoRunClass）："+flag);
            /*if(flag) {
                System.out.println(className + ":被标注了");
            }else{
                System.out.println(className + ":没有被标注");
            }*/
        }
    }
}
